import md5 from "./md5.js";
import CryptoJS from 'crypto-js'
// const CryptoJS = require('./encypt.js')
// console.log(CryptoJS, md5)
let key = CryptoJS.enc.Latin1.parse('r4OMzLkMivzs4f9u'); //前后端保持一致(加密key)
let iv = CryptoJS.enc.Latin1.parse('vVZHqEald49oKpAa'); //前后端保持一致(加密iv)

// 前端加密传输参数
function encrypt(json_data) {
	let encryptedData = CryptoJS.AES.encrypt(json_data, key, {
		iv,
		mode: CryptoJS.mode.CBC,
		padding: CryptoJS.pad.ZeroPadding
	}).toString();
	return encryptedData;
}


//前端解密（后端数据）
function decode_h(string) {
	let result = CryptoJS.AES.decrypt(string, CryptoJS.enc.Utf8.parse('r4OMzLkMivzs4f9u'), {
		iv: CryptoJS.enc.Utf8.parse('vVZHqEald49oKpAa'),
		mode: CryptoJS.mode.CBC,
		padding: CryptoJS.pad.Pkcs7
	})
	return result.toString(CryptoJS.enc.Utf8)
}
//前端解密（前端自加密）
function decode_q(string) {
	let decrypt = CryptoJS.AES.decrypt(string, key, {
		iv: iv,
		mode: CryptoJS.mode.CBC,
		padding: CryptoJS.pad.ZeroPadding
	});
	return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
// 验证签名
function ident(obj) {
	/*
	obj 传入的对象
	obj :{
	    func:'',  //请求接口方法名 (!!必须)

	    // 接口所需的参数
	    name:'用户名',
	    age:'18',
	}
	*/
	let nonce = md5.getNum(); //获取随机数
	let timestamp = Date.parse(new Date()) / 1000; //获取时间戳
	let sign = md5.get_MD5(obj.func, nonce, timestamp); //加密方法
	obj.nonce = nonce;
	obj.timestamp = timestamp;
	obj.sign = sign;
	return obj //返回验签的参数（包含接口所需参数）
}

export default {
	encrypt,
	ident,
	decode_h,
	decode_q
}